import { login,getUserInfo,loginOut } from '@/api/user.js'
import {setAppstr,getAppstr} from '@/utils/base.js'
	
const getDefaultState = () => {
	return {
		userInfo: {}
	}
}


const state = getDefaultState()

const mutations = {
	SET_USERINFO: (state, userInfo) => {
		state.userInfo = userInfo
	}
}

const actions = {
	login({ commit }, userInfo) {
		const { username, password} = userInfo
		return new Promise((resolve, reject) => {
			login({
				username: username.trim(),
				password: password.trim()
			}).then(response => {
				if(response.code == 200) {
					const { data } = response
					if (data.appstr) {
						setAppstr(data.appstr);
					}
				}
				resolve(response)
			}).catch(error => {
				reject(error)
			})
		})
	},
	//小程序登录
	// miniLogin({commit},info){
	// 	return new Promise((resolve, reject) => {
	// 		if(getToken()) {
	// 			let obj = {status:200,msg:'登录成功！'};
	// 			resolve(obj);
	// 		}else{
	// 			oauthMiniProgram({params:info}).then(response => {
	// 				if(response.status === 200) {
	// 					setToken(response.data);
	// 				}
	// 				resolve(response);
	// 			}).catch(error => {
	// 				reject(error)
	// 			})
	// 		}
	// 	});
	// },
	// appLogin({commit},info){
	// 	return new Promise((resolve, reject) => {
	// 		// appLogin(info).then(response => {
	// 		// 	if(response.code === 200) {
	// 		// 		setAppStr(response.data.appstr);
	// 		// 		setLoginPhone(response.data.phone);
	// 		// 		commit('SET_APPSTR',response.data.appstr);
	// 		// 	}
	// 		// 	resolve(response);
	// 		// }).catch(error => {
	// 		// 	reject(error)
	// 		// })
			
	// 	});
	// },
	userInfo({commit,dispatch},info){
		return new Promise((resolve, reject) => {
			getUserInfo().then(response => {
				if(response.code === 200) {
					commit('SET_USERINFO',response.data.info);
				}
				resolve(response);
			}).catch(error => {
				reject(error)
			})
			
		});
	},
	logOut({commit,dispatch}) {
		return new Promise((resolve, reject) => {
			loginOut().then(response => {
				setAppstr(null);
				resolve(response);
			}).catch(error => {
				reject(error)
			})
			
		});
	},
	clearAppStr({commit,dispatch}){
		return new Promise((resolve, reject) => {
			setAppstr(null);
			resolve({});
		});
	}
}

export default {
	namespaced: true,
	state,
	mutations,
	actions
}
